package com.example.thirdhomework

import android.os.Bundle
import android.os.Handler
import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.thirdhomework.databinding.ActivityThirdBinding

class ThirdActivity : AppCompatActivity() {
    var seconds = 0
    var running = false
    var wasRunning = false
    private val binding by lazy { ActivityThirdBinding.inflate(layoutInflater) }
    override fun onCreate(savedInstanceState: Bundle?) {
        Log.d("life cycle","onCreate")
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(binding.root)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }


        runTimer()
        binding.buttonStart.setOnClickListener{
            running = true
        }
        binding.buttonStop.setOnClickListener{
            running = false
        }
        binding.buttonRestart.setOnClickListener {
            running = true
            seconds = 0
        }

        if (savedInstanceState != null){
            seconds = savedInstanceState.getInt("seconds")
            running = savedInstanceState.getBoolean("running")
            wasRunning = savedInstanceState.getBoolean("wasRunning")
        }

//        runTimer()
//
//        button_start.setOnClickListener {
//            running = true
//        }
//
//        button_stop.setOnClickListener {
//            running = false
//        }
//
//        button_restart.setOnClickListener {
//            running = true
//            seconds = 0
//        }

        ViewCompat.setOnApplyWindowInsetsListener(binding.main) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        //写运行计时器的函数
//        fun runTimer(){
//            val handler = Handler()
//            val runnable = object: Runnable{
//                override fun run(){
//                    val hours = seconds /3600
//                    val minutes = (seconds % 3600) / 60
//                    val secs = seconds % 60
//
//                    binding.textViewTimer.text = String.format("%02d:%02d:%02d",hours,minutes,secs)
//                    if (running) {
//                        seconds++
//                    }
//                    handler.postDelayed(this,1000)
//                }
//            }
//            handler.post(runnable)
//        }



    }

    private fun runTimer() {
        val handler = Handler()
        val runnable = object: Runnable{
            override fun run(){
                val hours = seconds /3600
                val minutes = (seconds % 3600) / 60
                val secs = seconds % 60

                binding.textViewTimer.text = String.format("%02d:%02d:%02d",hours,minutes,secs)
                if (running) {
                    seconds++
                }
                handler.postDelayed(this,1000)
            }
        }
        handler.post(runnable)
    }


    override fun onSaveInstanceState(outState: Bundle){
        super.onSaveInstanceState(outState)
        Log.d("life cycle","onSaveInstanceState")
        outState.putInt("seconds",seconds)
        outState.putBoolean("running",running)
        outState.putBoolean("wasRunning",wasRunning)
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d("life cycle","onDestroy")
    }
    override fun onStart(){
        super.onStart()
        Log.d("life cycle","onStart")
    }
    override fun onStop(){
        super.onStop()
        Log.d("life cycle","onStop")
    }
    override fun onRestart() {
        super.onRestart()
        Log.d("life cycle","onRestart")
    }
    override fun onResume() {
        super.onResume()
        Log.d("life cycle","onResume")
        if (wasRunning){
            running = true
        }
    }
    override fun onPause() {
        super.onPause()
        Log.d("life cycle","onPause")
        wasRunning = running
        running = false
    }

}

